from django.db import models
from datetime import datetime

from DjangoUeditor.models import UEditorField


class GoodsCategory(models.Model):
    """
    商品类别
    """

    CATEGORY_TYPE = (
        (1, '一级类目'),
        (2, '二级类目'),
        (3, '三级类目'),
    )

    name = models.CharField(max_length=30, default="", verbose_name='商品类别', help_text='类别名')
    code = models.CharField(max_length=30, default="", verbose_name='类别code', help_text='类别code')
    desc = models.TextField(default="", verbose_name="类别描述", help_text='类别描述')
    # 分类级别
    category_type = models.IntegerField(choices=CATEGORY_TYPE, verbose_name='类目级别', help_text='类目级别')

    # 这个self可以让这个外键指向自己
    # 通过relate_name 可以做1对多的反向查询
    parent_category = models.ForeignKey('self', null=True, blank=True, verbose_name='父类别', help_text='父目录',
                                        related_name='sub_cat')
    is_tab = models.BooleanField(default=False, verbose_name='是否导航', help_text='是否导航')

    add_time = models.DateTimeField(default=datetime.now, verbose_name='添加时间')
    update_time = models.DateTimeField(default=datetime.now, verbose_name='更改时间')

    class Meta:
        verbose_name = '商品类别'
        verbose_name_plural = verbose_name

    def __str__(self):
        return self.name


class GoodsCategoryBrand(models.Model):
    """
    品牌名
    """
    name = models.CharField(max_length=30, default="", verbose_name='品牌名', help_text='品牌名')
    desc = models.TextField(default="", verbose_name="品牌描述", help_text='品牌描述')
    image = models.ImageField(upload_to='brands/', max_length=150, verbose_name='商标图片')

    add_time = models.DateTimeField(default=datetime.now, verbose_name='添加时间')
    update_time = models.DateTimeField(default=datetime.now, verbose_name='更改时间')

    class Meta:
        verbose_name = '品牌名称'
        verbose_name_plural = verbose_name

    def __str__(self):
        return self.name


class Goods(models.Model):
    """
    商品
    """
    category = models.ForeignKey(GoodsCategory, verbose_name="商品类目", help_text="商品类目")
    goods_sn = models.CharField(max_length=50, default="", verbose_name="商品唯一货号", help_text="商品唯一货号")
    name = models.CharField(max_length=100, verbose_name="商品名", help_text="商品名")
    click_num = models.IntegerField(default=0, verbose_name="点击数", help_text="点击数")
    sold_num = models.IntegerField(default=0, verbose_name="商品销售量", help_text="商品销售量")
    fav_num = models.IntegerField(default=0, verbose_name="收藏数", help_text="收藏数")
    goods_num = models.IntegerField(default=0, verbose_name="库存数", help_text="库存数")
    market_price = models.FloatField(default=0, verbose_name="市场价格", help_text="市场价格")
    shop_price = models.FloatField(default=0, verbose_name="本店价格", help_text="本店价格")
    goods_brief = models.TextField(max_length=500, verbose_name="商品简短描述", help_text="商品简短描述")
    goods_desc = UEditorField(verbose_name=u"内容", imagePath="goods/images/", width=1000, height=300,
                              filePath="goods/files/", default='', help_text="商品详情")
    ship_free = models.BooleanField(default=True, verbose_name="是否承担运费", help_text="是否承担运费")
    goods_front_image = models.ImageField(upload_to="goods/images/", null=True, blank=True, verbose_name="封面图",
                                          help_text="封面图")
    is_new = models.BooleanField(default=False, verbose_name="是否新品", help_text="是否新品")
    is_hot = models.BooleanField(default=False, verbose_name="是否热销", help_text="是否热销")

    add_time = models.DateTimeField(default=datetime.now, verbose_name="添加时间")
    update_time = models.DateTimeField(default=datetime.now, verbose_name='更改时间')

    class Meta:
        verbose_name = '商品'
        verbose_name_plural = verbose_name

    def __str__(self):
        return self.name


class GoodsImage(models.Model):
    """
    商品轮播图
    """
    goods = models.ForeignKey(Goods, verbose_name="商品", related_name="images")
    image = models.ImageField(upload_to="goods/images/", verbose_name="图片", null=True, blank=True)
    add_time = models.DateTimeField(default=datetime.now, verbose_name="添加时间")

    class Meta:
        verbose_name = '商品轮播图'
        verbose_name_plural = verbose_name

    def __str__(self):
        return self.goods.name


class Banner(models.Model):
    """
    首页轮播图
    """
    goods = models.ForeignKey(Goods, verbose_name="商品")
    image = models.ImageField(upload_to='banner', verbose_name="轮播图片")
    index = models.IntegerField(default=0, verbose_name="轮播顺序")
    add_time = models.DateTimeField(default=datetime.now, verbose_name="添加时间")

    class Meta:
        verbose_name = '首页轮播图'
        verbose_name_plural = verbose_name

    def __str__(self):
        return self.goods.name


class HotSearchWords(models.Model):
    """
    热搜词
    """
    keywords = models.CharField(default="", max_length=20, verbose_name="热搜词")
    index = models.IntegerField(default=0, verbose_name="排序")
    add_time = models.DateTimeField(default=datetime.now, verbose_name="添加时间")

    class Meta:
        verbose_name = '热搜词'
        verbose_name_plural = verbose_name

    def __str__(self):
        return self.keywords
